package org.xyq.singleton.hungry;

/**
 * @author xuyanqing
 * @description 单例模式-饿汉式（静态常量）
 * 原文链接：https://blog.csdn.net/qq_38411796/article/details/140815883
 * <p>
 * 优缺点
 * 优点：
 * 实现简单；
 * 线程安全，无需额外的同步控制。
 * 缺点：
 * <p>
 * 没有延迟加载效果（即使应用中可能永远不会使用这个实例，也会在类加载时创建）。
 * @date 2025-02-14 15:08
 * @creed where there is a will,there is a way. yx
 */

public class StaticConstant {
    private static final StaticConstant instance = new StaticConstant();

    // 反射攻击
    // 即使构造器为私有，通过反射仍然可以调用构造方法来创建对象，从而破坏单例。
    // 应对策略：在构造方法中判断是否已有实例存在，如果存在则抛出异常（如上面饿汉式示例中的处理）。
    // -------------------------------------
    // 私有构造方法，防止外部实例化
    private StaticConstant() {
        // 防止通过反射调用私有构造方法创建多个实例
        if (instance != null) {
            throw new IllegalStateException("实例已经存在！");
        }
    }

    public static StaticConstant getInstance() {
        return instance;
    }
}
